﻿Imports Persistencia
Public Class ctrVisita
    Inherits ctrPadrao
#Region "Variáveis"
    Private prvIDHistorico As Int32

    Private objVisita As New perVisitas
    Private objCliente As New perCliente
#End Region

#Region "Métodos"
    Public Function SalvarHistoricoVisita(ByVal iIDHistorico As Int32, ByVal iIDCliente As Int32, _
                                     ByVal iIDContato As Int32, ByVal sObservacoes As String, _
                                     ByVal dtData As Date) As Int32
        Dim bResultado As Boolean

        Try

            MyBase.iniciarControleTransacional()
            objVisita.TransacaoOrigem = MyBase.ControleTransacional

            If (iIDHistorico > 0) Then
                prvIDHistorico = iIDHistorico
                Call objVisita.AlterarHistoricoVisita(iIDHistorico, iIDCliente, iIDContato, _
                                                             dtData, sObservacoes)
                bResultado = True
            Else

                prvIDHistorico = Me.objVisita.InserirHistoricoVisita(iIDCliente, iIDContato, dtData, sObservacoes)
                bResultado = True

            End If
            If (bResultado) Then

                bResultado = objVisita.MarcarVisitaRealizada(iIDCliente, iIDContato, dtData, prvIDHistorico)

            End If

        Catch ex As Exception

            bResultado = False
            Throw New Exception("Exceção no método 'SalvarHistoricoVisita'. " & Environment.NewLine & Environment.NewLine & ex.Message)

        Finally

            If bResultado Then
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Commit)
            Else
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Rollback)
            End If

            Me.objVisita.TransacaoOrigem = Nothing

        End Try

        Return bResultado

    End Function
    Public Function SalvarVisitaAgendada(ByVal bEditar As Boolean, ByVal iIDCliente As Int32, _
                                         ByVal iIDContato As Int32, ByVal iIDUsuario As Int32, _
                                         ByVal sObservacoes As String, ByVal dtData As Date, _
                                         ByVal dtHora As Date) As Boolean
        Dim bResultado As Boolean

        Try

            MyBase.iniciarControleTransacional()
            objVisita.TransacaoOrigem = MyBase.ControleTransacional

            If (bEditar) Then

                bResultado = objVisita.AlterarVisitaAgendada(iIDCliente, iIDContato, _
                                                             dtData, dtHora, sObservacoes)
            Else
                If (Not objVisita.VerificarVisitaExiste(iIDCliente, iIDContato, dtData)) Then
                    bResultado = Me.objVisita.InserirVisitaAgendada(iIDCliente, iIDContato, dtData, dtHora, sObservacoes, iIDUsuario)
                Else
                    MsgBox("Visita já agendada para esta data.", MsgBoxStyle.Information, "Cadastro de visitas")
                    bResultado = False
                End If
            End If

        Catch ex As Exception

            bResultado = False
            Throw New Exception("Exceção no método 'SalvarVisitaAgendada'. " & Environment.NewLine & Environment.NewLine & ex.Message)

        Finally

            If bResultado Then
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Commit)
            Else
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Rollback)
            End If

            Me.objVisita.TransacaoOrigem = Nothing

        End Try

        Return bResultado

    End Function
    Public Function dsVisitasPorPeriodo(ByVal dtDataInicio As Date, ByVal dtDataFim As Date, _
                                        ByVal iIdCliente As Int32, ByVal iIdRegiao As Int32, _
                                        ByVal iIdContato As Int32, ByVal iIdUsuario As Int32, _
                                        ByVal IncluirRealizadas As Boolean) As DataSet

        Try

            Return objVisita.VisitasPorPeriodo(dtDataInicio, dtDataFim, iIdCliente, iIdRegiao, iIdContato, iIdUsuario, IncluirRealizadas)

        Catch ex As Exception
            Throw New Exception("Exceção no método 'dsVisitasPorPeriodo'." & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function
    Public Function ExcluirVisitaAgendada(ByVal iIDCliente As Int32, ByVal iIDContato As Int32, _
                                          ByVal dtDataVisita As Date) As Boolean

        Dim bResultado As Boolean

        Try
            MyBase.iniciarControleTransacional()
            objVisita.TransacaoOrigem = MyBase.ControleTransacional

            bResultado = objVisita.ExcluirVisitaAgendada(iIDCliente, iIDContato, dtDataVisita)

        Catch ex As Exception
            bResultado = False
            Throw New Exception("Exceção no método 'ExcluirVisitaAgendada'." & Environment.NewLine & Environment.NewLine & ex.Message)

        Finally

            If bResultado Then
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Commit)
            Else
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Rollback)
            End If

            Me.objVisita.TransacaoOrigem = Nothing
        End Try

        Return bResultado
    End Function
#End Region
End Class
